// 定义共享的 pinia 数据
import {defineStore} from 'pinia'

//定义数据并且对外暴露
// store就是定义共享状态的包装对象
// 内部包含四个属性： id 唯一标识 state 完整类型推理，推荐使用箭头函数 存放的数据 getters 类似属性
//计算，存储放对数据
// 操作的方法  actions 存储数据的复杂业务逻辑方法
// 理解： store类似Java中的实体类， id就是类名， state 就是装数据值的属性  getters就是get方法，
//actions就是对数据操作的其他方法
// 定义一个 Person 共享

export const definedPerson = defineStore('personPinia',// 当前数据的 id 必须全局唯一
    {
        state:()=>{
            // 状态 就是一些响应式数据
            return {
                username:'张三',
                age:0,
                hobbies:['唱歌','跳舞'],
            }
        },
        getters:{
            // 用于定义一些通过数据计算而得到结果的一些方法，一般在此处不对数据进行修改
            // getters 中的方法可以当作属性值使用
            getHobbiesCount() {
                return this.hobbies.length
            },
            getAge() {
                return this.age
            },
        },
        actions:{
            // 专门定义一些修改数据的函数
            doubleAge() {
                this.age = this.age*2
            }
        }
    }
)